home *** CD-ROM | disk | FTP | other *** search
/ Amiga Inside! / Amiga FD Inside (1995)(Ultramax).iso / berndspd / devtools / intuigen / examples / sbox.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-22  |  6.1 KB  |  400 lines

  1. #include <stddef.h>
  2. #include <stdlib.h>
  3. #include <exec/exec.h>
  4. #include <intuition/intuition.h>
  5. #include <IntuiGen/IntuiGen.h>
  6. #include <IntuiGen/IGRequest.h>
  7. #include <IntuiGen/IGSBox.h>
  8.  
  9.  
  10. ULONG OpenLibrary ();
  11.  
  12. ULONG IntuitionBase;
  13. ULONG GfxBase;
  14.  
  15. void Quit ();
  16. void AddCity ();
  17.  
  18.  
  19. USHORT UpArrowData[] = {
  20.  
  21.     /* BitPlane 0 */
  22.  
  23.     0x0000,
  24.     0x0004,
  25.     0x0004,
  26.     0x0304,
  27.     0x0784,
  28.     0x0CC4,
  29.     0x1864,
  30.     0x1024,
  31.     0x0004,
  32.     0x0004,
  33.     0xFFFC,
  34.  
  35.     /* BitPlane 1 */
  36.  
  37.     0xFFFF,
  38.     0x8000,
  39.     0x8000,
  40.     0x8000,
  41.     0x8000,
  42.     0x8000,
  43.     0x8000,
  44.     0x8000,
  45.     0x8000,
  46.     0x8000,
  47.     0x0000
  48. };
  49.  
  50. USHORT DownArrowData[] = {
  51.  
  52.     /* BitPlane 0 */
  53.  
  54.     0x0000,
  55.     0x0004,
  56.     0x0004,
  57.     0x1024,
  58.     0x1864,
  59.     0x0CC4,
  60.     0x0784,
  61.     0x0304,
  62.     0x0004,
  63.     0x0004,
  64.     0xFFFC,
  65.  
  66.     /* BitPlane 1 */
  67.  
  68.     0xFFFF,
  69.     0x8000,
  70.     0x8000,
  71.     0x8000,
  72.     0x8000,
  73.     0x8000,
  74.     0x8000,
  75.     0x8000,
  76.     0x8000,
  77.     0x8000,
  78.     0x0000
  79. };
  80.  
  81. struct TextAttr TextAttributes0 =
  82. {
  83.     "topaz.font",
  84.     TOPAZ_EIGHTY,
  85.     NULL,
  86.     FPF_ROMFONT
  87. };
  88.  
  89. struct IntuiText ProjectItem0Text =
  90. {
  91.     0,1,
  92.     JAM2,
  93.     1,1,
  94.     &TextAttributes0,
  95.     (UBYTE *)"Quit",
  96.     NULL
  97. };
  98.  
  99. struct MenuItem ProjectItem0 =
  100. {
  101.     NULL,
  102.     1,0,
  103.     34,10,
  104.     ITEMENABLED | ITEMTEXT | HIGHCOMP,
  105.     0,
  106.     (APTR)&ProjectItem0Text,
  107.     NULL,
  108.     0,
  109.     NULL,
  110.     0
  111. };
  112.  
  113. struct Menu Project =
  114. {
  115.     NULL,
  116.     2,0,
  117.     60,10,
  118.     MENUENABLED,
  119.     (BYTE *)"Project",
  120.     &ProjectItem0,
  121.     0,0,0,0
  122. };
  123.  
  124. struct Image SBoxScrollDownArrowImage =
  125. {
  126.     0,0,
  127.     14,11,
  128.     2,
  129.     DownArrowData,
  130.     3,0,
  131.     NULL
  132. };
  133.  
  134. struct IGPropArrowInfo SBoxScrollDownArrowGadIGInfo =
  135. {
  136.     GADG_ARROW,
  137.     NULL,
  138.     NULL,
  139.     NULL,
  140.     NULL,
  141.     NULL
  142. };
  143.  
  144. struct Gadget SBoxScrollDownArrowGad =
  145. {
  146.     NULL,
  147.     257,170,
  148.     14,11,
  149.     GFLG_GADGHCOMP | GFLG_GADGIMAGE,
  150.     GACT_RELVERIFY | GACT_IMMEDIATE,
  151.     GTYP_BOOLGADGET,
  152.     (APTR)&SBoxScrollDownArrowImage,
  153.     NULL,
  154.     NULL,
  155.     NULL,
  156.     NULL,
  157.     2,
  158.     (APTR)&SBoxScrollDownArrowGadIGInfo
  159. };
  160.  
  161. struct Image SBoxScrollUpArrowImage =
  162. {
  163.     0,0,
  164.     14,11,
  165.     2,
  166.     UpArrowData,
  167.     3,0,
  168.     NULL
  169. };
  170.  
  171. struct IGPropArrowInfo SBoxScrollUpArrowGadIGInfo =
  172. {
  173.     GADG_ARROW,
  174.     NULL,
  175.     NULL,
  176.     NULL,
  177.     NULL,
  178.     NULL
  179. };
  180.  
  181. struct Gadget SBoxScrollUpArrowGad =
  182. {
  183.     &SBoxScrollDownArrowGad,
  184.     257,158,
  185.     14,11,
  186.     GFLG_GADGHCOMP | GFLG_GADGIMAGE,
  187.     GACT_RELVERIFY | GACT_IMMEDIATE,
  188.     GTYP_BOOLGADGET,
  189.     (APTR)&SBoxScrollUpArrowImage,
  190.     NULL,
  191.     NULL,
  192.     NULL,
  193.     NULL,
  194.     1,
  195.     (APTR)&SBoxScrollUpArrowGadIGInfo
  196. };
  197.  
  198. struct SelectBox SBox =
  199. {
  200.     NULL,
  201.     9,25,
  202.     246,15,
  203.     0,
  204.     SB_TOGGLEONE,
  205.     2,1,
  206.     NULL,
  207.     NULL,
  208.     NULL,
  209.     NULL,
  210.     NULL,
  211.     0,
  212.     NULL,
  213.     NULL,
  214.     NULL,
  215.     NULL
  216. };
  217.  
  218. struct IGPropInfo SBoxScrollIGInfo =
  219. {
  220.     GADG_PROP,
  221.     UpdateSBox,
  222.     &SBox,
  223.     &SBoxScrollUpArrowGad,&SBoxScrollDownArrowGad,
  224.     0,0,
  225.     0,15,
  226.     0,0,
  227.     NULL,
  228.     NULL
  229. };
  230.  
  231. WORD SBoxScrollKnobBuffer[4];
  232.  
  233. struct PropInfo SBoxScrollPropInfo =
  234. {
  235.     AUTOKNOB | FREEVERT,0,0,0x0800,0x0800,0,0,0,0,0,0
  236. };
  237.  
  238. struct Gadget SBoxScroll =
  239. {
  240.     &SBoxScrollUpArrowGad,
  241.     257,25,
  242.     14,132,
  243.     GFLG_GADGHNONE,
  244.     GACT_RELVERIFY | GACT_IMMEDIATE,
  245.     GTYP_PROPGADGET,
  246.     (APTR)SBoxScrollKnobBuffer,
  247.     NULL,
  248.     NULL,
  249.     NULL,
  250.     (APTR)&SBoxScrollPropInfo,
  251.     0,
  252.     (APTR)&SBoxScrollIGInfo
  253. };
  254.  
  255. struct Window *SBWindow;
  256.  
  257. struct NewWindow NewSBWindow =
  258. {
  259.     21,0,
  260.     322,200,
  261.     0,1,
  262.     IDCMP_GADGETDOWN | IDCMP_GADGETUP | IDCMP_MENUPICK | IDCMP_RAWKEY |
  263.     IDCMP_INTUITICKS,
  264.     WFLG_DRAGBAR | WFLG_DEPTHGADGET | WFLG_SMART_REFRESH | WFLG_ACTIVATE,
  265.     NULL,
  266.     NULL,
  267.     (UBYTE *)"Select Box Window",
  268.     NULL,
  269.     NULL,
  270.     322,180,
  271.     483,210,
  272.     WBENCHSCREEN
  273. };
  274.  
  275. struct IGEndList SBoxRequestEndList[] =
  276. {
  277.     { IDCMP_RAWKEY,51,8,NULL,NULL,NULL,0 },
  278.     { 0xffffffff,0,0,0,0,0 }
  279. };
  280.  
  281. struct IGKeyCommand SBoxRequestCommands[] =
  282. {
  283.     { 0, 0, 0 }
  284. };
  285.  
  286. struct IGMenu SBoxRequestIGMenuInfo[] =
  287. {
  288.     { 63488, Quit }, { 0, 0 }
  289. };
  290.  
  291. struct IGRequest SBoxRequest =
  292. {
  293.     &NewSBWindow,        /* NewWindow */
  294.     NULL,        /* Window */
  295.     "Select Box Example", /* ScreenName */
  296.     NULL,        /* RequesterToOpen */
  297.     NULL,        /* Requester */
  298.     SBoxRequestIGMenuInfo,        /* Menus */
  299.     SBoxRequestEndList,        /* EndList */
  300.     SBoxRequestCommands,        /* KeyCommands */
  301.     &SBoxScroll,        /* Gadgets */
  302.     IG_ADDGADGETS,            /* Flags */
  303.     NULL,        /* StringToActivate */
  304.     &Project,        /* MenuStrip */
  305.     NULL,        /* Borders */
  306.     NULL,        /* Images */
  307.     NULL,        /* ITexts */
  308.     &SBox,         /* SBoxes */
  309.     NULL,        /* IGObjects */
  310.     NULL,        /* DataStruct */
  311.     NULL,        /* ReqKey */
  312.     NULL,        /* InitFunction */
  313.     0,        /* Terminate */
  314.     NULL,        /* IComPort */
  315.     NULL,        /* InternalData */
  316.     NULL,        /* DSelectFunction */
  317.     NULL,        /* EndFunction */
  318.     NULL,        /* LoopFunction */
  319.     0,0,        /* CallLoop, LoopBitsUsed */
  320.     NULL, NULL,    /* ArexxPort, ArexxFunction */
  321.     0,NULL,     /* AdditionalSignals, SignalFunction */
  322.     NULL,        /* GUpFunction */
  323.     NULL,        /* GDownFunction */
  324.     NULL,        /* MouseButtons */
  325.     NULL,        /* MouseMove */
  326.     NULL,        /* DeltaMove */
  327.     NULL,        /* RawKey */
  328.     AddCity,    /* IntuiTicks */
  329.     NULL,        /* DiskInserted */
  330.     NULL,        /* DiskRemoved */
  331.     NULL,        /* MenuVerify */
  332.     NULL,        /* MenuPick */
  333.     NULL,        /* SizeVerify */
  334.     NULL,        /* NewSize */
  335.     NULL,        /* ReqVerify */
  336.     NULL,        /* ReqSet */
  337.     NULL,        /* ReqClear */
  338.     NULL,        /* ActiveWindow */
  339.     NULL,        /* InActiveWindow */
  340.     NULL,        /* RefreshWindow */
  341.     NULL,        /* NewPrefs */
  342.     NULL,        /* CloseWindow */
  343.     NULL,        /* DoubleClick */
  344.     NULL,        /* OtherMessages */
  345.     NULL        /* UserData */
  346. };
  347.  
  348. char *items[]={"New York","Chicago","Boston","Los Angeles",
  349.            "San Francisco","Philadelphia","Denver",
  350.            "Salt Lake City","Des Moines","Cincinatti",
  351.            "Santa Clara","Miami","London","Tokyo",
  352.            "Moscow","Berlin","Paris","Venice",
  353.            "Hong Kong","Kyoto","Prague","Portland",
  354.            "Reno","Austin","Mexico City","Vancouver",
  355.            "Barcelona","Calgary","Stolkholm","Constantinople",
  356.            "Petersburg","Chattanooga","Washington, D.C.",
  357.            "Nashville","Fairbanks","Anchorage","Baton Rouge",
  358.            "Jefferson City","Rome","Florence"};
  359.  
  360.           /* 40 items */
  361.  
  362. void Quit (struct IGRequest *req,struct IntuiMessage *msg)
  363. {
  364.     SBoxRequest.Terminate=1;
  365. }
  366.  
  367. void AddCity (struct IGRequest *req,struct IntuiMessage *msg)
  368. {
  369.     static USHORT i=0;
  370.  
  371.     AddEntryAlpha (&SBox,items[i],0);
  372.     RefreshSBox (&SBoxRequest,&SBox);
  373.     ++i;
  374.     if (i==40)
  375.     SBoxRequest.IntuiTicks=0;
  376. }
  377.  
  378. main ()
  379. {
  380.     struct SelectBoxEntry *entry,*prev;
  381.  
  382.     IntuitionBase=OpenLibrary ("intuition.library",0);
  383.     GfxBase=OpenLibrary ("graphics.library",0);
  384.  
  385.     IGRequest (&SBoxRequest);
  386.  
  387.  
  388.     entry=SBox.Entries;
  389.     while (entry) {
  390.     prev=entry;
  391.     entry=entry->Next;
  392.     FreeSBEntry (prev);
  393.     }
  394.  
  395.     CloseLibrary (IntuitionBase);
  396.     CloseLibrary (GfxBase);
  397. }
  398.  
  399.  
  400.